#include <iostream>
#include <string>
#include <cstdarg>
using namespace std;

void myprintf(const string fmt, ...)
{
    va_list ap;
    va_start(ap, fmt); // 让ap指针指向fmt的位置
    char *res;
    int ret = vasprintf(&res, fmt.c_str(), ap);//按照fmt里面的串格式通过ap往后移动进行拼接（类似printf）
    //res指向的一块动态堆开辟空间
    if (ret == -1)
    {
        cout << "转好失败" << endl;
    }
    else
        cout << res << endl;
    va_end(ap); // 对ap指针进行置空
    free(res);//需要手动清空
}
int main()
{

    myprintf("牛逼%d", 666);
}